/*
 * @Descripttion: 
 * @Author: cuidm
 * @Date: 2022-07-14 15:10:40
 * @LastEditors: cuidm
 * @LastEditTime: 2022-09-26 14:49:22
 */

import { deepMix } from '@antv/util';
export default G6 => {
  // 叶子节点，带图标
  G6.registerNode('leaf-node', {
    /**
     * 绘制后的附加操作，默认没有任何操作
     * @param  {Object} cfg 节点的配置项
     * @param  {G.Group} group 图形分组，节点中图形对象的容器
     */
    afterDraw(cfg, group) {
      const {size, style} = cfg;
      const r = size / 2;
      group.addShape('circle', {
        zIndex: -2,
        attrs: {
          x: 0,
          y: 0,
          r: r + 20,
          fill: style.fill || '#3056E3',
          fillOpacity: 0
        },
        name: 'circle-shape',
      });
      group.sort();
    },
    /**
     * 响应节点的状态变化。
     * 在需要使用动画来响应状态变化时需要被复写，其他样式的响应参见下文提及的 [配置状态样式] 文档
     * @param  {String} name 状态名称
     * @param  {Object} value 状态值
     * @param  {Node} node 节点
     */
    setState (name, value, node) {
        const group = node.getContainer();
        const rect = group.getFirst();
        const nodeShape = group.getChildByIndex(1);
        if (name === 'active') {
          rect.attr({
            fillOpacity: value ? 0.3 : 0,
          });
        } else if(name == 'activeByLegend') {
          nodeShape?.attr({
              fillOpacity: value ? 1 : 0.5,
              r: value ? 16: 13
          });
        }
    },
  }, 'circle'); 
};
